//
// Description: 781. 森林中的兔子
// Created by Loading on 2021/4/5.
//

#include <bits/stdc++.h>

using namespace std;

int numRabbits(vector<int> &answers) {
    //统计每个数量出现的次数
    unordered_map<int, int> m;
    for (auto &x : answers) {
        m[x]++;
    }

    int res = 0;
    for (auto &it : m) {
        //求最少的总数，回答相同的数量的要尽量合并，不要忘记加上它自己本身
        //用出现的次数来计算可以组成最少多少组，假设兔子报1，则一定两个一组，所以最后 * (it.first + 1)
        res += ((it.second - 1) / (it.first + 1) + 1) * (it.first + 1);
    }

    return res;
}

int main() {
    vector<int> answers = {1, 1, 2};
    cout << numRabbits(answers) << endl;
}